import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from './plugins/axios'
import cloneDeep from 'lodash/cloneDeep'
import utils from '@/plugins/utils'
import { validator, checkBoolNum, isEmpty } from '@/plugins/validate'
import './plugins/directive'
import './plugins/element'
import './plugins/codemirror'
import './icons'
import './components'
import './assets/scss/index.scss'

// ajax请求方法
Vue.prototype.$ajax = axios

// 工具类
Vue.prototype.$utils = utils

// 权限方法
Vue.prototype.$auth = utils.isAuth

// 获取字典方法
Vue.prototype.$dict = utils.getDict
Vue.prototype.$dictDb = utils.getDictDb
Vue.prototype.$dictList = utils.getDictList

// 获取图片信息方法
Vue.prototype.$img = utils.getImg

// 下载文件方法
Vue.prototype.$dlFile = utils.downloadFile

// 表单通用自定义验证
Vue.prototype.$validator = validator

// 表单验证是否0或1
Vue.prototype.$checkBoolNum = checkBoolNum

// 表单验证是否为空字符串
Vue.prototype.$checkEmpty = isEmpty

// 更改vue跳转
Vue.prototype.$blank = utils.blank

// 系统显示名称
Vue.prototype.$name = utils.sysShowName

// 非生产环境下才引入mock
if (process.env.NODE_ENV !== 'production') {
  require('@/mock')
}

// 保存整站vuex本地储存初始状态
window.TAG_CONFIG['storeState'] = cloneDeep(store.state)

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
